/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package fr.unice.miage.sessions;

import fr.unice.miage.entities.CompteBanquaire;
import fr.unice.miage.entities.Utilisateur;
import java.util.Collection;
import javax.ejb.Stateless;
import javax.ejb.LocalBean;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

/**
 *
 * @author remi
 */
@Stateless
@LocalBean
public class GestionnaireUtilisateur
{
    @PersistenceContext(unitName = "BankRootRomanoHeens-ejbPU")
    private EntityManager em;
    
    public Utilisateur creeUtilisateur(String login, String password)
    {
        Utilisateur u = new Utilisateur(login, password);
        em.persist(u);
        return u;
    }
    
    public void addCompte(Utilisateur u, CompteBanquaire a) {
        u.addCompte(a);
        em.merge(u);
    }
    
    public Utilisateur getUtilisateurByLogin(String login)
    {
        Query q = em.createQuery("select u from Utilisateur u where lower(u.login) like :login");
        q.setParameter("login", login.toLowerCase());
        try{
            return (Utilisateur) q.getSingleResult();
        }catch(NoResultException ex)
        {
            return null;
        }
    }
    
    public boolean acceptConnexion(String login, String password) {
        try {
            Utilisateur u = this.getUtilisateurByLogin(login);
            if (u != null && u.isGoodPassword(password)) {
                return true;
            } else {
                return false;
            }
        } catch (NoResultException ex) {
            return false;
        }
    }
    
    public int getCountUser()
    {
        Query q = em.createQuery("select u from Utilisateur u");
        int i = 0;
        try {
            Collection<Utilisateur> utils = q.getResultList();
            i = utils.size();
        } catch (NoResultException ex) {
           i=0;
        }
        return i;
    }
    
}
